package com.itheima.model.behavior.vos;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

/**
 * 用户画像视图对象
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "用户画像视图对象")
public class UserProfileVo implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("用户ID")
    private Integer userId;

    @ApiModelProperty("用户昵称")
    private String nickname;

    @ApiModelProperty("用户头像")
    private String avatar;

    // 阅读统计
    @ApiModelProperty("总阅读时长（分钟）")
    private Integer totalReadingTime;

    @ApiModelProperty("阅读图书总数")
    private Integer totalBooksRead;

    @ApiModelProperty("活跃天数")
    private Integer activeDays;

    // 阅读等级
    @ApiModelProperty("阅读等级")
    private String readingLevel;

    @ApiModelProperty("等级描述")
    private String levelDesc;

    @ApiModelProperty("距离下一等级所需时长（分钟）")
    private Integer nextLevelTime;

    // 阅读偏好
    @ApiModelProperty("最喜欢的分类")
    private String favoriteCategory;

    @ApiModelProperty("分类偏好分布")
    private List<CategoryPreferenceVo> categoryPreferences;

    @ApiModelProperty("偏好标签")
    private List<String> preferenceTags;

    // 阅读习惯
    @ApiModelProperty("阅读高峰时段")
    private String readingPeakTime;

    @ApiModelProperty("平均单次阅读时长（分钟）")
    private Double avgReadingDuration;

    @ApiModelProperty("每周阅读天数")
    private Integer weeklyReadingDays;

    // 社交统计
    @ApiModelProperty("笔记总数")
    private Integer noteCount;

    @ApiModelProperty("书评总数")
    private Integer reviewCount;

    @ApiModelProperty("获赞总数")
    private Integer likeCount;

    // 成就列表
    @ApiModelProperty("成就列表")
    private List<AchievementVo> achievements;
}

